class Solution {
    public String countAndSay(int n) {
        //动态规划。
        String[] dp = new String[n];
        if(n == 0) return null;
        if(n == 1) return "1";
        dp[0] = "1";
        dp[1] = "11";
        for(int i = 2 ; i < n ; i++){
            String pre = dp[i-1];
            //转化成char，提高效率
            char[] prechar = pre.toCharArray();
            StringBuilder b = new StringBuilder();
            int count = 1;
            char curr = prechar[0];
            for(int j = 1 ; j < pre.length(); j++){
                //和前面相同的话，数量加一
                //不相同的话，添加到数列
                if(prechar[j] != curr ){
                    b.append(count);
                    b.append(curr);
                    curr = prechar[j];
                    count = 1;
                }else{
                    count++;
                }
                // b.append(count);
                // b.append(curr);
            }
            //最后一个数
            b.append(count);
            b.append(curr);
            dp[i] = b.toString();
        }
        return dp[n-1];
    }
}